!
    function (t, e, i) {
        var o = ["webkit", "Moz", "ms", "O"],
            r = {},
            n;

        function a(t, i) {
            var o = e.createElement(t || "div"),
                r;
            for (r in i) o[r] = i[r];
            return o
        }

        function s(t) {
            for (var e = 1,
                     i = arguments.length; e < i; e++) t.appendChild(arguments[e]);
            return t
        }

        var f = function () {
            var t = a("style", {
                type: "text/css"
            });
            s(e.getElementsByTagName("head")[0], t);
            return t.sheet || t.styleSheet
        }();

        function l(t, e, i, o) {
            var a = ["opacity", e, ~~(t * 100), i, o].join("-"),
                s = .01 + i / o * 100,
                l = Math.max(1 - (1 - t) / e * (100 - s), t),
                p = n.substring(0, n.indexOf("Animation")).toLowerCase(),
                u = p && "-" + p + "-" || "";
            if (!r[a]) {
                f.insertRule("@" + u + "keyframes " + a + "{0%{opacity:" + l + "}" + s + "%{opacity:" + t + "}" + (s + .01) + "%{opacity:1}" + (s + e) % 100 + "%{opacity:" + t + "}100%{opacity:" + l + "}}", f.cssRules.length);
                r[a] = 1
            }
            return a
        }

        function p(t, e) {
            var r = t.style,
                n, a;
            if (r[e] !== i) return e;
            e = e.charAt(0).toUpperCase() + e.slice(1);
            for (a = 0; a < o.length; a++) {
                n = o[a] + e;
                if (r[n] !== i) return n
            }
        }

        function u(t, e) {
            for (var i in e) t.style[p(t, i) || i] = e[i];
            return t
        }

        function c(t) {
            for (var e = 1; e < arguments.length; e++) {
                var o = arguments[e];
                for (var r in o) if (t[r] === i) t[r] = o[r]
            }
            return t
        }

        function d(t) {
            var e = {
                x: t.offsetLeft,
                y: t.offsetTop
            };
            while (t = t.offsetParent) e.x += t.offsetLeft,
                e.y += t.offsetTop;
            return e
        }

        var h = {
            lines: 12,
            length: 7,
            width: 5,
            radius: 10,
            rotate: 0,
            corners: 1,
            color: "#000",
            speed: 1,
            trail: 100,
            opacity: 1 / 4,
            fps: 20,
            zIndex: 2e9,
            className: "spinner",
            top: "auto",
            left: "auto",
            position: "relative"
        };

        function m(t) {
            if (!this.spin) return new m(t);
            this.opts = c(t || {},
                m.defaults, h)
        }

        m.defaults = {};
        c(m.prototype, {
            spin: function (t) {
                this.stop();
                var e = this,
                    i = e.opts,
                    o = e.el = u(a(0, {
                        className: i.className
                    }), {
                        position: i.position,
                        width: 0,
                        zIndex: i.zIndex
                    }),
                    r = i.radius + i.length + i.width,
                    s,
                    f;
                if (t) {
                    t.insertBefore(o, t.firstChild || null);
                    f = d(t);
                    s = d(o);
                    u(o, {
                        left: (i.left == "auto" ? f.x - s.x + (t.offsetWidth >> 1) : parseInt(i.left, 10) + r) + "px",
                        top: (i.top == "auto" ? f.y - s.y + (t.offsetHeight >> 1) : parseInt(i.top, 10) + r) + "px"
                    })
                }
                o.setAttribute("aria-role", "progressbar");
                e.lines(o, e.opts);
                if (!n) {
                    var l = 0,
                        p = i.fps,
                        c = p / i.speed,
                        h = (1 - i.opacity) / (c * i.trail / 100),
                        m = c / i.lines;
                    (function y() {
                        l++;
                        for (var t = i.lines; t; t--) {
                            var r = Math.max(1 - (l + t * m) % c * h, i.opacity);
                            e.opacity(o, i.lines - t, r, i)
                        }
                        e.timeout = e.el && setTimeout(y, ~~(1e3 / p))
                    })()
                }
                return e
            },
            stop: function () {
                var t = this.el;
                if (t) {
                    clearTimeout(this.timeout);
                    if (t.parentNode) t.parentNode.removeChild(t);
                    this.el = i
                }
                return this
            },
            lines: function (t, e) {
                var i = 0,
                    o;

                function r(t, o) {
                    return u(a(), {
                        position: "absolute",
                        width: e.length + e.width + "px",
                        height: e.width + "px",
                        background: t,
                        boxShadow: o,
                        transformOrigin: "left",
                        transform: "rotate(" + ~~(360 / e.lines * i + e.rotate) + "deg) translate(" + e.radius + "px,0)",
                        borderRadius: (e.corners * e.width >> 1) + "px"
                    })
                }

                for (; i < e.lines; i++) {
                    o = u(a(), {
                        position: "absolute",
                        top: 1 + ~(e.width / 2) + "px",
                        transform: e.hwaccel ? "translate3d(0,0,0)" : "",
                        opacity: e.opacity,
                        animation: n && l(e.opacity, e.trail, i, e.lines) + " " + 1 / e.speed + "s linear infinite"
                    });
                    if (e.shadow) s(o, u(r("#000", "0 0 4px #000"), {
                        top: 2 + "px"
                    }));
                    s(t, s(o, r(e.color, "0 0 1px rgba(0,0,0,.1)")))
                }
                return t
            },
            opacity: function (t, e, i) {
                if (e < t.childNodes.length) t.childNodes[e].style.opacity = i
            }
        });
        (function () {
            function t(t, e) {
                return a("<" + t + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', e)
            }

            var e = u(a("group"), {
                behavior: "url(#default#VML)"
            });
            if (!p(e, "transform") && e.adj) {
                f.addRule(".spin-vml", "behavior:url(#default#VML)");
                m.prototype.lines = function (e, i) {
                    var o = i.length + i.width,
                        r = 2 * o;

                    function n() {
                        return u(t("group", {
                            coordsize: r + " " + r,
                            coordorigin: -o + " " + -o
                        }), {
                            width: r,
                            height: r
                        })
                    }

                    var a = -(i.width + i.length) * 2 + "px",
                        f = u(n(), {
                            position: "absolute",
                            top: a,
                            left: a
                        }),
                        l;

                    function p(e, r, a) {
                        s(f, s(u(n(), {
                            rotation: 360 / i.lines * e + "deg",
                            left: ~~r
                        }), s(u(t("roundrect", {
                            arcsize: i.corners
                        }), {
                            width: o,
                            height: i.width,
                            left: i.radius,
                            top: -i.width >> 1,
                            filter: a
                        }), t("fill", {
                            color: i.color,
                            opacity: i.opacity
                        }), t("stroke", {
                            opacity: 0
                        }))))
                    }

                    if (i.shadow) for (l = 1; l <= i.lines; l++) p(l, -2, "progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");
                    for (l = 1; l <= i.lines; l++) p(l);
                    return s(e, f)
                };
                m.prototype.opacity = function (t, e, i, o) {
                    var r = t.firstChild;
                    o = o.shadow && o.lines || 0;
                    if (r && e + o < r.childNodes.length) {
                        r = r.childNodes[e + o];
                        r = r && r.firstChild;
                        r = r && r.firstChild;
                        if (r) r.opacity = i
                    }
                }
            } else n = p(e, "animation")
        })();
        if (typeof define == "function" && define.amd) define(function () {
            return m
        });
        else t.Spinner = m
    }(window, document);
$.fn.spin = function (config) {
    var opts = {};
    if (false === config) {
        opts = config
    } else {
        opts = {
            lines: "undefined" != typeof(config) ? ("undefined" == typeof(config.lines) ? 10 : config.lines) : 10,
            length: "undefined" != typeof(config) ? ("undefined" == typeof(config.length) ? 7 : config.length) : 7,
            width: "undefined" != typeof(config) ? ("undefined" == typeof(config.width) ? 4 : config.width) : 4,
            radius: "undefined" != typeof(config) ? ("undefined" == typeof(config.radius) ? 10 : config.radius) : 10,
            corners: "undefined" != typeof(config) ? ("undefined" == typeof(config.corners) ? 1 : config.corners) : 1,
            rotate: "undefined" != typeof(config) ? ("undefined" == typeof(config.rotate) ? 0 : config.rotate) : 0,
            color: "undefined" != typeof(config) ? ("undefined" == typeof(config.color) ? 'black' : config.color) : 'black',
            speed: "undefined" != typeof(config) ? ("undefined" == typeof(config.speed) ? 1 : config.speed) : 1,
            trail: "undefined" != typeof(config) ? ("undefined" == typeof(config.trail) ? 60 : config.trail) : 60,
            shadow: "undefined" != typeof(config) ? ("undefined" == typeof(config.shadow) ? false : config.shadow) : false,
            hwaccel: "undefined" != typeof(config) ? ("undefined" == typeof(config.hwaccel) ? false : config.hwaccel) : false,
            className: "undefined" != typeof(config) ? ("undefined" == typeof(config.className) ? 'spinner' : config.className) : 'spinner',
            zIndex: 2e9,
            top: "undefined" != typeof(config) ? ("undefined" == typeof(config.top) ? 'auto' : config.top) : 'auto',
            left: "undefined" != typeof(config) ? ("undefined" == typeof(config.left) ? 'auto' : config.left) : 'auto'
        }
    }
    this.each(function () {
        var $this = $(this),
            data = $this.data();
        if (data.spinner) {
            data.spinner.stop();
            delete data.spinner
        }
        if (opts !== false) {
            data.spinner = new Spinner($.extend({
                    color: $this.css('color')
                },
                opts)).spin(this)
        }
    });
    return this
};
$.fn.extend({
    loading: function (_opt, _config) {
        var config = "undefined" == typeof(_config) ? {
            length: 20,
            speed: 2
        } : _config;
        var opt = "undefined" == typeof(_opt) ? true : _opt;
        var self = $(this);
        var selector = self.selector;
        if ("static" == self.css("position")) {
            self.css("position", "relative");
        }
        var masklayer = $("#main_masklayer");
        var floatwindow = $("#main_floatwindow");
        var w = self.width();
        var h = self.height();
        if (opt) {
            if ("window" == selector) {
                if ("none" == masklayer.css("display")) {
                    masklayer.css("display", "block");
                    floatwindow.spin(config)
                }
            } else {
                var len = self.find(".masklayer,.floatwindow").length;
                if (0 == len) {
                    var mask = masklayer.clone();
                    var float = floatwindow.clone();
                    mask.removeAttr("id").removeClass("ie6_masklayer").css({
                        position: "absolute",
                        display: "block"
                    }).width(w).height(h);
                    float.removeAttr("id").removeClass("ie6_floatwindow").css({
                        position: "absolute",
                        left: w / 2,
                        top: h / 2
                    }).spin(config);
                    self.append(mask).append(float)
                }
            }
        } else {
            if ("window" == selector) {
                masklayer.css("display", "none");
                floatwindow.spin(false)
            } else {
                self.find(".masklayer,.floatwindow").remove()
            }
        }
    }
});
$(function () {
    $("body").append("<div id=\"main_floatwindow\" class=\"floatwindow ie6_floatwindow\"></div><div id=\"main_masklayer\" class=\"masklayer ie6_masklayer\"></div>");
});
